home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
031-040
/
amok33
/
portprint
/
portprint.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
74 lines
(* -------------------------------------------------------------------------
:Program. PortPrint
:Author. Kai Bolay
:Address. Hoffmannstraße 168, 7250 Leonberg
:Phone. 07152/22135
:History. v1.0 Initial
:Copyright. Freeware (maybe a claim by Markt & Technik)
:Language. Modula-2
:Translator. M2Amiga 3.3d
:Contents. PortPrint's main output Program
------------------------------------------------------------------------- *)
MODULE PortPrint;
FROM SYSTEM IMPORT ADR;
FROM Terminal IMPORT WriteString, WriteLn, waitCloseGadget;
FROM Str IMPORT Length, Compare;
FROM Arts IMPORT Assert, DetectCtrlC;
FROM Exec IMPORT FindPort, MsgPortPtr, WaitPort, GetMsg, MessagePtr,
FreeMem, Message, Forbid, Permit;
FROM ExecSupport IMPORT CreatePort, DeletePort;
FROM PortInOut IMPORT PortName, SendText;
CONST Copyright = "This is PortPrint by K. Bolay (Idea: Achim Albert)";
Install = "PortPrint installed!";
Remove = "PortPrint removed";
Quit = "!¡!QUIT!¡!";
VAR PortPtr : MsgPortPtr;
MsgPtr : MessagePtr;
TextPtr : POINTER TO ARRAY [0..999] OF CHAR;
BEGIN
DetectCtrlC (FALSE);
WriteString (Copyright); WriteLn;
Forbid;
PortPtr := FindPort (ADR (PortName));
IF PortPtr = NIL THEN
PortPtr := CreatePort (ADR (PortName), 0);
Permit;
Assert (PortPtr # NIL, ADR ("Can't create Port!"));
waitCloseGadget := FALSE;
WriteString (Install); WriteLn;
LOOP
WaitPort (PortPtr);
MsgPtr := GetMsg (PortPtr);
IF MsgPtr # NIL THEN
TextPtr := MsgPtr^.node.name;
IF TextPtr # NIL THEN
Forbid;
IF Compare (TextPtr^, Quit) = 0 THEN
DeletePort (PortPtr);
Permit;
PortPtr := NIL;
FreeMem (TextPtr, Length (TextPtr^) + 1);
FreeMem (MsgPtr, SIZE (Message));
EXIT;
ELSE
Permit;
WriteString (TextPtr^);
FreeMem (TextPtr, Length (TextPtr^) + 1);
FreeMem (MsgPtr, SIZE (Message));
END; (* IF *)
END; (* IF *)
WriteLn;
MsgPtr := NIL;
END; (* IF *)
END; (* LOOP *)
ELSE
Permit;
SendText (Quit);
WriteString (Remove); WriteLn;
END; (* IF *)
END PortPrint.